package bancosys.tec.security.authorization;

import java.io.Serializable;

/**
 * Permissão de URL.
 * 
 * @created 25/03/2008
 * @author Gustavo Almeida
 */
public class UrlPermission extends AbstractPermission implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * Construtor.
     * 
     * @param id prefixo do url
     */
    public UrlPermission(String id) {
        if (id == null) {
            throw new NullPointerException("O URL deve ser diferente de null.");
        }
        this.id = id;
        this.type = UrlPermission.class;
    }

    /**
     * Compara um url com o dessa instância.
     * 
     * @param url url a ser testado.
     * @return <code>true</code> se id for prefixo do url passado como parâmetro, <code>false</code> caso contrário.
     */
    @Override
    protected boolean matchPermissionId(String url) {
        // XXX (mmr) : comparando sempre em upper case
        return url.toUpperCase().startsWith(this.id.toUpperCase());
    }

    /**
     * Devolve a representação string dessa entidade.
     * 
     * @return a representação string dessa entidade.
     */
    @Override
    public String toString() {
        return "UrlCredential(url: " + this.id + ")";
    }
}
